Correctly parse lat/lon from magellan track messasges.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sun, 15 Dec 2002 23:05:07 +0000 (23:05 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sun, 15 Dec 2002 23:05:07 +0000 (23:05 +0000)
gpsbabel/magproto.c

index af0396e258f1534e7095d039cd59695c3e936da5..e9a252c256f20a6ef697d8e1003206dd987fb7c5 100644 (file)
@@ -36,6 +36,7 @@ extern gpsdata_type objective;
 
 static char * termread(char *ibuf, int size);
 static void termwrite(char *obuf, int size);
+static double mag2degrees(double mag_val);
 
 typedef enum {
        mrs_handoff = 0,
@@ -753,8 +754,12 @@ mag_trkparse(char *trkmsg)
         */
        waypt->creation_time = mktime(&tm);
 
-       waypt->position.latitude.degrees = latdeg / 100.0;
-       waypt->position.longitude.degrees = lngdeg / 100.0;
+       if (latdir == 'S') latdeg = -latdeg;
+       waypt->position.latitude.degrees = mag2degrees(latdeg);
+
+       if (lngdir == 'W') lngdeg = -lngdeg;
+       waypt->position.longitude.degrees = mag2degrees(lngdeg);
+
        waypt->position.altitude.altitude_meters = alt;
 
        return waypt;